/**
 * 锁工具类
 */
class LockUtil {

    /**
     * 锁芯
     * @type {{}}
     */
    static LOCK = {};

    /**
     * 获取锁
     * @param key
     * @param timeout
     */
    static lock(key, timeout) {
        // 获取锁
        const l = LockUtil.LOCK[key];
        if (l != null) {
            return false;
        }
        // 上锁
        LockUtil.LOCK[key] = true;
        if (timeout == null) {
            timeout = 5000;
        }
        // 设置有效时间
        setTimeout(function () {
            LockUtil.unLock(key);
        }, timeout);
        return true;
    }

    /**
     * 解锁
     * @param key
     */
    static unLock(key) {
        delete LockUtil.LOCK[key];
    }
}

module.exports = {
    LockUtil
}